package org.xtext.ic.dsl.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import org.xtext.ic.dsl.services.ICDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalICDslParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package-prefix'", "'layer'", "'{'", "'}'", "'typedef'", "'mapsto'", "'.'", "'entity'", "'extends'", "'*'"
    };
    public static final int RULE_ID=4;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalICDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalICDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalICDslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g"; }


     
     	private ICDslGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(ICDslGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleModel"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:60:1: entryRuleModel : ruleModel EOF ;
    public final void entryRuleModel() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:61:1: ( ruleModel EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:62:1: ruleModel EOF
            {
             before(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel61);
            ruleModel();

            state._fsp--;

             after(grammarAccess.getModelRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:69:1: ruleModel : ( ( rule__Model__Group__0 ) ) ;
    public final void ruleModel() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:73:2: ( ( ( rule__Model__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:74:1: ( ( rule__Model__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:74:1: ( ( rule__Model__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:75:1: ( rule__Model__Group__0 )
            {
             before(grammarAccess.getModelAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:76:1: ( rule__Model__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:76:2: rule__Model__Group__0
            {
            pushFollow(FOLLOW_rule__Model__Group__0_in_ruleModel94);
            rule__Model__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getModelAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRulePackagePrefix"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:88:1: entryRulePackagePrefix : rulePackagePrefix EOF ;
    public final void entryRulePackagePrefix() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:89:1: ( rulePackagePrefix EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:90:1: rulePackagePrefix EOF
            {
             before(grammarAccess.getPackagePrefixRule()); 
            pushFollow(FOLLOW_rulePackagePrefix_in_entryRulePackagePrefix121);
            rulePackagePrefix();

            state._fsp--;

             after(grammarAccess.getPackagePrefixRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackagePrefix128); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePackagePrefix"


    // $ANTLR start "rulePackagePrefix"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:97:1: rulePackagePrefix : ( ( rule__PackagePrefix__Group__0 ) ) ;
    public final void rulePackagePrefix() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:101:2: ( ( ( rule__PackagePrefix__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:102:1: ( ( rule__PackagePrefix__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:102:1: ( ( rule__PackagePrefix__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:103:1: ( rule__PackagePrefix__Group__0 )
            {
             before(grammarAccess.getPackagePrefixAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:104:1: ( rule__PackagePrefix__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:104:2: rule__PackagePrefix__Group__0
            {
            pushFollow(FOLLOW_rule__PackagePrefix__Group__0_in_rulePackagePrefix154);
            rule__PackagePrefix__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPackagePrefixAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePackagePrefix"


    // $ANTLR start "entryRuleType"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:116:1: entryRuleType : ruleType EOF ;
    public final void entryRuleType() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:117:1: ( ruleType EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:118:1: ruleType EOF
            {
             before(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType181);
            ruleType();

            state._fsp--;

             after(grammarAccess.getTypeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType188); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:125:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
    public final void ruleType() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:129:2: ( ( ( rule__Type__Alternatives ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:130:1: ( ( rule__Type__Alternatives ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:130:1: ( ( rule__Type__Alternatives ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:131:1: ( rule__Type__Alternatives )
            {
             before(grammarAccess.getTypeAccess().getAlternatives()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:132:1: ( rule__Type__Alternatives )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:132:2: rule__Type__Alternatives
            {
            pushFollow(FOLLOW_rule__Type__Alternatives_in_ruleType214);
            rule__Type__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getTypeAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleLayerType"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:144:1: entryRuleLayerType : ruleLayerType EOF ;
    public final void entryRuleLayerType() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:145:1: ( ruleLayerType EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:146:1: ruleLayerType EOF
            {
             before(grammarAccess.getLayerTypeRule()); 
            pushFollow(FOLLOW_ruleLayerType_in_entryRuleLayerType241);
            ruleLayerType();

            state._fsp--;

             after(grammarAccess.getLayerTypeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLayerType248); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleLayerType"


    // $ANTLR start "ruleLayerType"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:153:1: ruleLayerType : ( ( rule__LayerType__Alternatives ) ) ;
    public final void ruleLayerType() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:157:2: ( ( ( rule__LayerType__Alternatives ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:158:1: ( ( rule__LayerType__Alternatives ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:158:1: ( ( rule__LayerType__Alternatives ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:159:1: ( rule__LayerType__Alternatives )
            {
             before(grammarAccess.getLayerTypeAccess().getAlternatives()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:160:1: ( rule__LayerType__Alternatives )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:160:2: rule__LayerType__Alternatives
            {
            pushFollow(FOLLOW_rule__LayerType__Alternatives_in_ruleLayerType274);
            rule__LayerType__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getLayerTypeAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLayerType"


    // $ANTLR start "entryRuleLayer"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:172:1: entryRuleLayer : ruleLayer EOF ;
    public final void entryRuleLayer() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:173:1: ( ruleLayer EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:174:1: ruleLayer EOF
            {
             before(grammarAccess.getLayerRule()); 
            pushFollow(FOLLOW_ruleLayer_in_entryRuleLayer301);
            ruleLayer();

            state._fsp--;

             after(grammarAccess.getLayerRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLayer308); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleLayer"


    // $ANTLR start "ruleLayer"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:181:1: ruleLayer : ( ( rule__Layer__Group__0 ) ) ;
    public final void ruleLayer() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:185:2: ( ( ( rule__Layer__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:186:1: ( ( rule__Layer__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:186:1: ( ( rule__Layer__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:187:1: ( rule__Layer__Group__0 )
            {
             before(grammarAccess.getLayerAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:188:1: ( rule__Layer__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:188:2: rule__Layer__Group__0
            {
            pushFollow(FOLLOW_rule__Layer__Group__0_in_ruleLayer334);
            rule__Layer__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getLayerAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleLayer"


    // $ANTLR start "entryRuleTypeDef"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:200:1: entryRuleTypeDef : ruleTypeDef EOF ;
    public final void entryRuleTypeDef() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:201:1: ( ruleTypeDef EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:202:1: ruleTypeDef EOF
            {
             before(grammarAccess.getTypeDefRule()); 
            pushFollow(FOLLOW_ruleTypeDef_in_entryRuleTypeDef361);
            ruleTypeDef();

            state._fsp--;

             after(grammarAccess.getTypeDefRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeDef368); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleTypeDef"


    // $ANTLR start "ruleTypeDef"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:209:1: ruleTypeDef : ( ( rule__TypeDef__Group__0 ) ) ;
    public final void ruleTypeDef() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:213:2: ( ( ( rule__TypeDef__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:214:1: ( ( rule__TypeDef__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:214:1: ( ( rule__TypeDef__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:215:1: ( rule__TypeDef__Group__0 )
            {
             before(grammarAccess.getTypeDefAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:216:1: ( rule__TypeDef__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:216:2: rule__TypeDef__Group__0
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__0_in_ruleTypeDef394);
            rule__TypeDef__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getTypeDefAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTypeDef"


    // $ANTLR start "entryRuleJAVAID"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:228:1: entryRuleJAVAID : ruleJAVAID EOF ;
    public final void entryRuleJAVAID() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:229:1: ( ruleJAVAID EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:230:1: ruleJAVAID EOF
            {
             before(grammarAccess.getJAVAIDRule()); 
            pushFollow(FOLLOW_ruleJAVAID_in_entryRuleJAVAID421);
            ruleJAVAID();

            state._fsp--;

             after(grammarAccess.getJAVAIDRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleJAVAID428); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleJAVAID"


    // $ANTLR start "ruleJAVAID"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:237:1: ruleJAVAID : ( ( rule__JAVAID__Group__0 ) ) ;
    public final void ruleJAVAID() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:241:2: ( ( ( rule__JAVAID__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:242:1: ( ( rule__JAVAID__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:242:1: ( ( rule__JAVAID__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:243:1: ( rule__JAVAID__Group__0 )
            {
             before(grammarAccess.getJAVAIDAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:244:1: ( rule__JAVAID__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:244:2: rule__JAVAID__Group__0
            {
            pushFollow(FOLLOW_rule__JAVAID__Group__0_in_ruleJAVAID454);
            rule__JAVAID__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getJAVAIDAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleJAVAID"


    // $ANTLR start "entryRuleEntity"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:256:1: entryRuleEntity : ruleEntity EOF ;
    public final void entryRuleEntity() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:257:1: ( ruleEntity EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:258:1: ruleEntity EOF
            {
             before(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity481);
            ruleEntity();

            state._fsp--;

             after(grammarAccess.getEntityRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity488); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:265:1: ruleEntity : ( ( rule__Entity__Group__0 ) ) ;
    public final void ruleEntity() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:269:2: ( ( ( rule__Entity__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:270:1: ( ( rule__Entity__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:270:1: ( ( rule__Entity__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:271:1: ( rule__Entity__Group__0 )
            {
             before(grammarAccess.getEntityAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:272:1: ( rule__Entity__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:272:2: rule__Entity__Group__0
            {
            pushFollow(FOLLOW_rule__Entity__Group__0_in_ruleEntity514);
            rule__Entity__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getEntityAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleAttribute"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:284:1: entryRuleAttribute : ruleAttribute EOF ;
    public final void entryRuleAttribute() throws RecognitionException {
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:285:1: ( ruleAttribute EOF )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:286:1: ruleAttribute EOF
            {
             before(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute541);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getAttributeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute548); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:293:1: ruleAttribute : ( ( rule__Attribute__Group__0 ) ) ;
    public final void ruleAttribute() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:297:2: ( ( ( rule__Attribute__Group__0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:298:1: ( ( rule__Attribute__Group__0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:298:1: ( ( rule__Attribute__Group__0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:299:1: ( rule__Attribute__Group__0 )
            {
             before(grammarAccess.getAttributeAccess().getGroup()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:300:1: ( rule__Attribute__Group__0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:300:2: rule__Attribute__Group__0
            {
            pushFollow(FOLLOW_rule__Attribute__Group__0_in_ruleAttribute574);
            rule__Attribute__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAttribute"


    // $ANTLR start "rule__Type__Alternatives"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:312:1: rule__Type__Alternatives : ( ( ruleLayer ) | ( ruleTypeDef ) | ( ruleEntity ) );
    public final void rule__Type__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:316:1: ( ( ruleLayer ) | ( ruleTypeDef ) | ( ruleEntity ) )
            int alt1=3;
            switch ( input.LA(1) ) {
            case 12:
                {
                alt1=1;
                }
                break;
            case 15:
                {
                alt1=2;
                }
                break;
            case 18:
                {
                alt1=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }

            switch (alt1) {
                case 1 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:317:1: ( ruleLayer )
                    {
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:317:1: ( ruleLayer )
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:318:1: ruleLayer
                    {
                     before(grammarAccess.getTypeAccess().getLayerParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleLayer_in_rule__Type__Alternatives610);
                    ruleLayer();

                    state._fsp--;

                     after(grammarAccess.getTypeAccess().getLayerParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:323:6: ( ruleTypeDef )
                    {
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:323:6: ( ruleTypeDef )
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:324:1: ruleTypeDef
                    {
                     before(grammarAccess.getTypeAccess().getTypeDefParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleTypeDef_in_rule__Type__Alternatives627);
                    ruleTypeDef();

                    state._fsp--;

                     after(grammarAccess.getTypeAccess().getTypeDefParserRuleCall_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:329:6: ( ruleEntity )
                    {
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:329:6: ( ruleEntity )
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:330:1: ruleEntity
                    {
                     before(grammarAccess.getTypeAccess().getEntityParserRuleCall_2()); 
                    pushFollow(FOLLOW_ruleEntity_in_rule__Type__Alternatives644);
                    ruleEntity();

                    state._fsp--;

                     after(grammarAccess.getTypeAccess().getEntityParserRuleCall_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Type__Alternatives"


    // $ANTLR start "rule__LayerType__Alternatives"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:340:1: rule__LayerType__Alternatives : ( ( ruleLayer ) | ( ruleEntity ) );
    public final void rule__LayerType__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:344:1: ( ( ruleLayer ) | ( ruleEntity ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==12) ) {
                alt2=1;
            }
            else if ( (LA2_0==18) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:345:1: ( ruleLayer )
                    {
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:345:1: ( ruleLayer )
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:346:1: ruleLayer
                    {
                     before(grammarAccess.getLayerTypeAccess().getLayerParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleLayer_in_rule__LayerType__Alternatives676);
                    ruleLayer();

                    state._fsp--;

                     after(grammarAccess.getLayerTypeAccess().getLayerParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:351:6: ( ruleEntity )
                    {
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:351:6: ( ruleEntity )
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:352:1: ruleEntity
                    {
                     before(grammarAccess.getLayerTypeAccess().getEntityParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleEntity_in_rule__LayerType__Alternatives693);
                    ruleEntity();

                    state._fsp--;

                     after(grammarAccess.getLayerTypeAccess().getEntityParserRuleCall_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__LayerType__Alternatives"


    // $ANTLR start "rule__Model__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:364:1: rule__Model__Group__0 : rule__Model__Group__0__Impl rule__Model__Group__1 ;
    public final void rule__Model__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:368:1: ( rule__Model__Group__0__Impl rule__Model__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:369:2: rule__Model__Group__0__Impl rule__Model__Group__1
            {
            pushFollow(FOLLOW_rule__Model__Group__0__Impl_in_rule__Model__Group__0723);
            rule__Model__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Model__Group__1_in_rule__Model__Group__0726);
            rule__Model__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__0"


    // $ANTLR start "rule__Model__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:376:1: rule__Model__Group__0__Impl : ( ( rule__Model__PackageAssignment_0 )? ) ;
    public final void rule__Model__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:380:1: ( ( ( rule__Model__PackageAssignment_0 )? ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:381:1: ( ( rule__Model__PackageAssignment_0 )? )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:381:1: ( ( rule__Model__PackageAssignment_0 )? )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:382:1: ( rule__Model__PackageAssignment_0 )?
            {
             before(grammarAccess.getModelAccess().getPackageAssignment_0()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:383:1: ( rule__Model__PackageAssignment_0 )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==11) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:383:2: rule__Model__PackageAssignment_0
                    {
                    pushFollow(FOLLOW_rule__Model__PackageAssignment_0_in_rule__Model__Group__0__Impl753);
                    rule__Model__PackageAssignment_0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getModelAccess().getPackageAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__0__Impl"


    // $ANTLR start "rule__Model__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:393:1: rule__Model__Group__1 : rule__Model__Group__1__Impl ;
    public final void rule__Model__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:397:1: ( rule__Model__Group__1__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:398:2: rule__Model__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__Model__Group__1__Impl_in_rule__Model__Group__1784);
            rule__Model__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__1"


    // $ANTLR start "rule__Model__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:404:1: rule__Model__Group__1__Impl : ( ( rule__Model__TypesAssignment_1 )* ) ;
    public final void rule__Model__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:408:1: ( ( ( rule__Model__TypesAssignment_1 )* ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:409:1: ( ( rule__Model__TypesAssignment_1 )* )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:409:1: ( ( rule__Model__TypesAssignment_1 )* )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:410:1: ( rule__Model__TypesAssignment_1 )*
            {
             before(grammarAccess.getModelAccess().getTypesAssignment_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:411:1: ( rule__Model__TypesAssignment_1 )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==12||LA4_0==15||LA4_0==18) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:411:2: rule__Model__TypesAssignment_1
            	    {
            	    pushFollow(FOLLOW_rule__Model__TypesAssignment_1_in_rule__Model__Group__1__Impl811);
            	    rule__Model__TypesAssignment_1();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

             after(grammarAccess.getModelAccess().getTypesAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__1__Impl"


    // $ANTLR start "rule__PackagePrefix__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:425:1: rule__PackagePrefix__Group__0 : rule__PackagePrefix__Group__0__Impl rule__PackagePrefix__Group__1 ;
    public final void rule__PackagePrefix__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:429:1: ( rule__PackagePrefix__Group__0__Impl rule__PackagePrefix__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:430:2: rule__PackagePrefix__Group__0__Impl rule__PackagePrefix__Group__1
            {
            pushFollow(FOLLOW_rule__PackagePrefix__Group__0__Impl_in_rule__PackagePrefix__Group__0846);
            rule__PackagePrefix__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__PackagePrefix__Group__1_in_rule__PackagePrefix__Group__0849);
            rule__PackagePrefix__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PackagePrefix__Group__0"


    // $ANTLR start "rule__PackagePrefix__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:437:1: rule__PackagePrefix__Group__0__Impl : ( 'package-prefix' ) ;
    public final void rule__PackagePrefix__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:441:1: ( ( 'package-prefix' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:442:1: ( 'package-prefix' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:442:1: ( 'package-prefix' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:443:1: 'package-prefix'
            {
             before(grammarAccess.getPackagePrefixAccess().getPackagePrefixKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__PackagePrefix__Group__0__Impl877); 
             after(grammarAccess.getPackagePrefixAccess().getPackagePrefixKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PackagePrefix__Group__0__Impl"


    // $ANTLR start "rule__PackagePrefix__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:456:1: rule__PackagePrefix__Group__1 : rule__PackagePrefix__Group__1__Impl ;
    public final void rule__PackagePrefix__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:460:1: ( rule__PackagePrefix__Group__1__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:461:2: rule__PackagePrefix__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__PackagePrefix__Group__1__Impl_in_rule__PackagePrefix__Group__1908);
            rule__PackagePrefix__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PackagePrefix__Group__1"


    // $ANTLR start "rule__PackagePrefix__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:467:1: rule__PackagePrefix__Group__1__Impl : ( ( rule__PackagePrefix__NameAssignment_1 ) ) ;
    public final void rule__PackagePrefix__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:471:1: ( ( ( rule__PackagePrefix__NameAssignment_1 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:472:1: ( ( rule__PackagePrefix__NameAssignment_1 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:472:1: ( ( rule__PackagePrefix__NameAssignment_1 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:473:1: ( rule__PackagePrefix__NameAssignment_1 )
            {
             before(grammarAccess.getPackagePrefixAccess().getNameAssignment_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:474:1: ( rule__PackagePrefix__NameAssignment_1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:474:2: rule__PackagePrefix__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__PackagePrefix__NameAssignment_1_in_rule__PackagePrefix__Group__1__Impl935);
            rule__PackagePrefix__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getPackagePrefixAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PackagePrefix__Group__1__Impl"


    // $ANTLR start "rule__Layer__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:488:1: rule__Layer__Group__0 : rule__Layer__Group__0__Impl rule__Layer__Group__1 ;
    public final void rule__Layer__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:492:1: ( rule__Layer__Group__0__Impl rule__Layer__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:493:2: rule__Layer__Group__0__Impl rule__Layer__Group__1
            {
            pushFollow(FOLLOW_rule__Layer__Group__0__Impl_in_rule__Layer__Group__0969);
            rule__Layer__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Layer__Group__1_in_rule__Layer__Group__0972);
            rule__Layer__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__0"


    // $ANTLR start "rule__Layer__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:500:1: rule__Layer__Group__0__Impl : ( 'layer' ) ;
    public final void rule__Layer__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:504:1: ( ( 'layer' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:505:1: ( 'layer' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:505:1: ( 'layer' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:506:1: 'layer'
            {
             before(grammarAccess.getLayerAccess().getLayerKeyword_0()); 
            match(input,12,FOLLOW_12_in_rule__Layer__Group__0__Impl1000); 
             after(grammarAccess.getLayerAccess().getLayerKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__0__Impl"


    // $ANTLR start "rule__Layer__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:519:1: rule__Layer__Group__1 : rule__Layer__Group__1__Impl rule__Layer__Group__2 ;
    public final void rule__Layer__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:523:1: ( rule__Layer__Group__1__Impl rule__Layer__Group__2 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:524:2: rule__Layer__Group__1__Impl rule__Layer__Group__2
            {
            pushFollow(FOLLOW_rule__Layer__Group__1__Impl_in_rule__Layer__Group__11031);
            rule__Layer__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Layer__Group__2_in_rule__Layer__Group__11034);
            rule__Layer__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__1"


    // $ANTLR start "rule__Layer__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:531:1: rule__Layer__Group__1__Impl : ( ( rule__Layer__NameAssignment_1 ) ) ;
    public final void rule__Layer__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:535:1: ( ( ( rule__Layer__NameAssignment_1 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:536:1: ( ( rule__Layer__NameAssignment_1 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:536:1: ( ( rule__Layer__NameAssignment_1 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:537:1: ( rule__Layer__NameAssignment_1 )
            {
             before(grammarAccess.getLayerAccess().getNameAssignment_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:538:1: ( rule__Layer__NameAssignment_1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:538:2: rule__Layer__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Layer__NameAssignment_1_in_rule__Layer__Group__1__Impl1061);
            rule__Layer__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getLayerAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__1__Impl"


    // $ANTLR start "rule__Layer__Group__2"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:548:1: rule__Layer__Group__2 : rule__Layer__Group__2__Impl rule__Layer__Group__3 ;
    public final void rule__Layer__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:552:1: ( rule__Layer__Group__2__Impl rule__Layer__Group__3 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:553:2: rule__Layer__Group__2__Impl rule__Layer__Group__3
            {
            pushFollow(FOLLOW_rule__Layer__Group__2__Impl_in_rule__Layer__Group__21091);
            rule__Layer__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Layer__Group__3_in_rule__Layer__Group__21094);
            rule__Layer__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__2"


    // $ANTLR start "rule__Layer__Group__2__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:560:1: rule__Layer__Group__2__Impl : ( '{' ) ;
    public final void rule__Layer__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:564:1: ( ( '{' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:565:1: ( '{' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:565:1: ( '{' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:566:1: '{'
            {
             before(grammarAccess.getLayerAccess().getLeftCurlyBracketKeyword_2()); 
            match(input,13,FOLLOW_13_in_rule__Layer__Group__2__Impl1122); 
             after(grammarAccess.getLayerAccess().getLeftCurlyBracketKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__2__Impl"


    // $ANTLR start "rule__Layer__Group__3"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:579:1: rule__Layer__Group__3 : rule__Layer__Group__3__Impl rule__Layer__Group__4 ;
    public final void rule__Layer__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:583:1: ( rule__Layer__Group__3__Impl rule__Layer__Group__4 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:584:2: rule__Layer__Group__3__Impl rule__Layer__Group__4
            {
            pushFollow(FOLLOW_rule__Layer__Group__3__Impl_in_rule__Layer__Group__31153);
            rule__Layer__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Layer__Group__4_in_rule__Layer__Group__31156);
            rule__Layer__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__3"


    // $ANTLR start "rule__Layer__Group__3__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:591:1: rule__Layer__Group__3__Impl : ( ( rule__Layer__TypesAssignment_3 )* ) ;
    public final void rule__Layer__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:595:1: ( ( ( rule__Layer__TypesAssignment_3 )* ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:596:1: ( ( rule__Layer__TypesAssignment_3 )* )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:596:1: ( ( rule__Layer__TypesAssignment_3 )* )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:597:1: ( rule__Layer__TypesAssignment_3 )*
            {
             before(grammarAccess.getLayerAccess().getTypesAssignment_3()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:598:1: ( rule__Layer__TypesAssignment_3 )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==12||LA5_0==18) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:598:2: rule__Layer__TypesAssignment_3
            	    {
            	    pushFollow(FOLLOW_rule__Layer__TypesAssignment_3_in_rule__Layer__Group__3__Impl1183);
            	    rule__Layer__TypesAssignment_3();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);

             after(grammarAccess.getLayerAccess().getTypesAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__3__Impl"


    // $ANTLR start "rule__Layer__Group__4"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:608:1: rule__Layer__Group__4 : rule__Layer__Group__4__Impl ;
    public final void rule__Layer__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:612:1: ( rule__Layer__Group__4__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:613:2: rule__Layer__Group__4__Impl
            {
            pushFollow(FOLLOW_rule__Layer__Group__4__Impl_in_rule__Layer__Group__41214);
            rule__Layer__Group__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__4"


    // $ANTLR start "rule__Layer__Group__4__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:619:1: rule__Layer__Group__4__Impl : ( '}' ) ;
    public final void rule__Layer__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:623:1: ( ( '}' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:624:1: ( '}' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:624:1: ( '}' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:625:1: '}'
            {
             before(grammarAccess.getLayerAccess().getRightCurlyBracketKeyword_4()); 
            match(input,14,FOLLOW_14_in_rule__Layer__Group__4__Impl1242); 
             after(grammarAccess.getLayerAccess().getRightCurlyBracketKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__Group__4__Impl"


    // $ANTLR start "rule__TypeDef__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:648:1: rule__TypeDef__Group__0 : rule__TypeDef__Group__0__Impl rule__TypeDef__Group__1 ;
    public final void rule__TypeDef__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:652:1: ( rule__TypeDef__Group__0__Impl rule__TypeDef__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:653:2: rule__TypeDef__Group__0__Impl rule__TypeDef__Group__1
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__0__Impl_in_rule__TypeDef__Group__01283);
            rule__TypeDef__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__TypeDef__Group__1_in_rule__TypeDef__Group__01286);
            rule__TypeDef__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__0"


    // $ANTLR start "rule__TypeDef__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:660:1: rule__TypeDef__Group__0__Impl : ( 'typedef' ) ;
    public final void rule__TypeDef__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:664:1: ( ( 'typedef' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:665:1: ( 'typedef' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:665:1: ( 'typedef' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:666:1: 'typedef'
            {
             before(grammarAccess.getTypeDefAccess().getTypedefKeyword_0()); 
            match(input,15,FOLLOW_15_in_rule__TypeDef__Group__0__Impl1314); 
             after(grammarAccess.getTypeDefAccess().getTypedefKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__0__Impl"


    // $ANTLR start "rule__TypeDef__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:679:1: rule__TypeDef__Group__1 : rule__TypeDef__Group__1__Impl rule__TypeDef__Group__2 ;
    public final void rule__TypeDef__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:683:1: ( rule__TypeDef__Group__1__Impl rule__TypeDef__Group__2 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:684:2: rule__TypeDef__Group__1__Impl rule__TypeDef__Group__2
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__1__Impl_in_rule__TypeDef__Group__11345);
            rule__TypeDef__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__TypeDef__Group__2_in_rule__TypeDef__Group__11348);
            rule__TypeDef__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__1"


    // $ANTLR start "rule__TypeDef__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:691:1: rule__TypeDef__Group__1__Impl : ( ( rule__TypeDef__NameAssignment_1 ) ) ;
    public final void rule__TypeDef__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:695:1: ( ( ( rule__TypeDef__NameAssignment_1 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:696:1: ( ( rule__TypeDef__NameAssignment_1 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:696:1: ( ( rule__TypeDef__NameAssignment_1 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:697:1: ( rule__TypeDef__NameAssignment_1 )
            {
             before(grammarAccess.getTypeDefAccess().getNameAssignment_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:698:1: ( rule__TypeDef__NameAssignment_1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:698:2: rule__TypeDef__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__TypeDef__NameAssignment_1_in_rule__TypeDef__Group__1__Impl1375);
            rule__TypeDef__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getTypeDefAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__1__Impl"


    // $ANTLR start "rule__TypeDef__Group__2"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:708:1: rule__TypeDef__Group__2 : rule__TypeDef__Group__2__Impl ;
    public final void rule__TypeDef__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:712:1: ( rule__TypeDef__Group__2__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:713:2: rule__TypeDef__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__2__Impl_in_rule__TypeDef__Group__21405);
            rule__TypeDef__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__2"


    // $ANTLR start "rule__TypeDef__Group__2__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:719:1: rule__TypeDef__Group__2__Impl : ( ( rule__TypeDef__Group_2__0 )? ) ;
    public final void rule__TypeDef__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:723:1: ( ( ( rule__TypeDef__Group_2__0 )? ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:724:1: ( ( rule__TypeDef__Group_2__0 )? )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:724:1: ( ( rule__TypeDef__Group_2__0 )? )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:725:1: ( rule__TypeDef__Group_2__0 )?
            {
             before(grammarAccess.getTypeDefAccess().getGroup_2()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:726:1: ( rule__TypeDef__Group_2__0 )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==16) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:726:2: rule__TypeDef__Group_2__0
                    {
                    pushFollow(FOLLOW_rule__TypeDef__Group_2__0_in_rule__TypeDef__Group__2__Impl1432);
                    rule__TypeDef__Group_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getTypeDefAccess().getGroup_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__2__Impl"


    // $ANTLR start "rule__TypeDef__Group_2__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:742:1: rule__TypeDef__Group_2__0 : rule__TypeDef__Group_2__0__Impl rule__TypeDef__Group_2__1 ;
    public final void rule__TypeDef__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:746:1: ( rule__TypeDef__Group_2__0__Impl rule__TypeDef__Group_2__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:747:2: rule__TypeDef__Group_2__0__Impl rule__TypeDef__Group_2__1
            {
            pushFollow(FOLLOW_rule__TypeDef__Group_2__0__Impl_in_rule__TypeDef__Group_2__01469);
            rule__TypeDef__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__TypeDef__Group_2__1_in_rule__TypeDef__Group_2__01472);
            rule__TypeDef__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__0"


    // $ANTLR start "rule__TypeDef__Group_2__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:754:1: rule__TypeDef__Group_2__0__Impl : ( 'mapsto' ) ;
    public final void rule__TypeDef__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:758:1: ( ( 'mapsto' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:759:1: ( 'mapsto' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:759:1: ( 'mapsto' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:760:1: 'mapsto'
            {
             before(grammarAccess.getTypeDefAccess().getMapstoKeyword_2_0()); 
            match(input,16,FOLLOW_16_in_rule__TypeDef__Group_2__0__Impl1500); 
             after(grammarAccess.getTypeDefAccess().getMapstoKeyword_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__0__Impl"


    // $ANTLR start "rule__TypeDef__Group_2__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:773:1: rule__TypeDef__Group_2__1 : rule__TypeDef__Group_2__1__Impl ;
    public final void rule__TypeDef__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:777:1: ( rule__TypeDef__Group_2__1__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:778:2: rule__TypeDef__Group_2__1__Impl
            {
            pushFollow(FOLLOW_rule__TypeDef__Group_2__1__Impl_in_rule__TypeDef__Group_2__11531);
            rule__TypeDef__Group_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__1"


    // $ANTLR start "rule__TypeDef__Group_2__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:784:1: rule__TypeDef__Group_2__1__Impl : ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) ) ;
    public final void rule__TypeDef__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:788:1: ( ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:789:1: ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:789:1: ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:790:1: ( rule__TypeDef__MappedTypeAssignment_2_1 )
            {
             before(grammarAccess.getTypeDefAccess().getMappedTypeAssignment_2_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:791:1: ( rule__TypeDef__MappedTypeAssignment_2_1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:791:2: rule__TypeDef__MappedTypeAssignment_2_1
            {
            pushFollow(FOLLOW_rule__TypeDef__MappedTypeAssignment_2_1_in_rule__TypeDef__Group_2__1__Impl1558);
            rule__TypeDef__MappedTypeAssignment_2_1();

            state._fsp--;


            }

             after(grammarAccess.getTypeDefAccess().getMappedTypeAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__1__Impl"


    // $ANTLR start "rule__JAVAID__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:805:1: rule__JAVAID__Group__0 : rule__JAVAID__Group__0__Impl rule__JAVAID__Group__1 ;
    public final void rule__JAVAID__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:809:1: ( rule__JAVAID__Group__0__Impl rule__JAVAID__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:810:2: rule__JAVAID__Group__0__Impl rule__JAVAID__Group__1
            {
            pushFollow(FOLLOW_rule__JAVAID__Group__0__Impl_in_rule__JAVAID__Group__01592);
            rule__JAVAID__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__JAVAID__Group__1_in_rule__JAVAID__Group__01595);
            rule__JAVAID__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__0"


    // $ANTLR start "rule__JAVAID__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:817:1: rule__JAVAID__Group__0__Impl : ( RULE_ID ) ;
    public final void rule__JAVAID__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:821:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:822:1: ( RULE_ID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:822:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:823:1: RULE_ID
            {
             before(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__JAVAID__Group__0__Impl1622); 
             after(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__0__Impl"


    // $ANTLR start "rule__JAVAID__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:834:1: rule__JAVAID__Group__1 : rule__JAVAID__Group__1__Impl ;
    public final void rule__JAVAID__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:838:1: ( rule__JAVAID__Group__1__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:839:2: rule__JAVAID__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__JAVAID__Group__1__Impl_in_rule__JAVAID__Group__11651);
            rule__JAVAID__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__1"


    // $ANTLR start "rule__JAVAID__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:845:1: rule__JAVAID__Group__1__Impl : ( ( rule__JAVAID__Group_1__0 )* ) ;
    public final void rule__JAVAID__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:849:1: ( ( ( rule__JAVAID__Group_1__0 )* ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:850:1: ( ( rule__JAVAID__Group_1__0 )* )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:850:1: ( ( rule__JAVAID__Group_1__0 )* )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:851:1: ( rule__JAVAID__Group_1__0 )*
            {
             before(grammarAccess.getJAVAIDAccess().getGroup_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:852:1: ( rule__JAVAID__Group_1__0 )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==17) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:852:2: rule__JAVAID__Group_1__0
            	    {
            	    pushFollow(FOLLOW_rule__JAVAID__Group_1__0_in_rule__JAVAID__Group__1__Impl1678);
            	    rule__JAVAID__Group_1__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

             after(grammarAccess.getJAVAIDAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__1__Impl"


    // $ANTLR start "rule__JAVAID__Group_1__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:866:1: rule__JAVAID__Group_1__0 : rule__JAVAID__Group_1__0__Impl rule__JAVAID__Group_1__1 ;
    public final void rule__JAVAID__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:870:1: ( rule__JAVAID__Group_1__0__Impl rule__JAVAID__Group_1__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:871:2: rule__JAVAID__Group_1__0__Impl rule__JAVAID__Group_1__1
            {
            pushFollow(FOLLOW_rule__JAVAID__Group_1__0__Impl_in_rule__JAVAID__Group_1__01713);
            rule__JAVAID__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__JAVAID__Group_1__1_in_rule__JAVAID__Group_1__01716);
            rule__JAVAID__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__0"


    // $ANTLR start "rule__JAVAID__Group_1__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:878:1: rule__JAVAID__Group_1__0__Impl : ( '.' ) ;
    public final void rule__JAVAID__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:882:1: ( ( '.' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:883:1: ( '.' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:883:1: ( '.' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:884:1: '.'
            {
             before(grammarAccess.getJAVAIDAccess().getFullStopKeyword_1_0()); 
            match(input,17,FOLLOW_17_in_rule__JAVAID__Group_1__0__Impl1744); 
             after(grammarAccess.getJAVAIDAccess().getFullStopKeyword_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__0__Impl"


    // $ANTLR start "rule__JAVAID__Group_1__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:897:1: rule__JAVAID__Group_1__1 : rule__JAVAID__Group_1__1__Impl ;
    public final void rule__JAVAID__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:901:1: ( rule__JAVAID__Group_1__1__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:902:2: rule__JAVAID__Group_1__1__Impl
            {
            pushFollow(FOLLOW_rule__JAVAID__Group_1__1__Impl_in_rule__JAVAID__Group_1__11775);
            rule__JAVAID__Group_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__1"


    // $ANTLR start "rule__JAVAID__Group_1__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:908:1: rule__JAVAID__Group_1__1__Impl : ( RULE_ID ) ;
    public final void rule__JAVAID__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:912:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:913:1: ( RULE_ID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:913:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:914:1: RULE_ID
            {
             before(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_1_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__JAVAID__Group_1__1__Impl1802); 
             after(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__1__Impl"


    // $ANTLR start "rule__Entity__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:929:1: rule__Entity__Group__0 : rule__Entity__Group__0__Impl rule__Entity__Group__1 ;
    public final void rule__Entity__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:933:1: ( rule__Entity__Group__0__Impl rule__Entity__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:934:2: rule__Entity__Group__0__Impl rule__Entity__Group__1
            {
            pushFollow(FOLLOW_rule__Entity__Group__0__Impl_in_rule__Entity__Group__01835);
            rule__Entity__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__1_in_rule__Entity__Group__01838);
            rule__Entity__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__0"


    // $ANTLR start "rule__Entity__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:941:1: rule__Entity__Group__0__Impl : ( 'entity' ) ;
    public final void rule__Entity__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:945:1: ( ( 'entity' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:946:1: ( 'entity' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:946:1: ( 'entity' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:947:1: 'entity'
            {
             before(grammarAccess.getEntityAccess().getEntityKeyword_0()); 
            match(input,18,FOLLOW_18_in_rule__Entity__Group__0__Impl1866); 
             after(grammarAccess.getEntityAccess().getEntityKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__0__Impl"


    // $ANTLR start "rule__Entity__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:960:1: rule__Entity__Group__1 : rule__Entity__Group__1__Impl rule__Entity__Group__2 ;
    public final void rule__Entity__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:964:1: ( rule__Entity__Group__1__Impl rule__Entity__Group__2 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:965:2: rule__Entity__Group__1__Impl rule__Entity__Group__2
            {
            pushFollow(FOLLOW_rule__Entity__Group__1__Impl_in_rule__Entity__Group__11897);
            rule__Entity__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__2_in_rule__Entity__Group__11900);
            rule__Entity__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__1"


    // $ANTLR start "rule__Entity__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:972:1: rule__Entity__Group__1__Impl : ( ( rule__Entity__NameAssignment_1 ) ) ;
    public final void rule__Entity__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:976:1: ( ( ( rule__Entity__NameAssignment_1 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:977:1: ( ( rule__Entity__NameAssignment_1 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:977:1: ( ( rule__Entity__NameAssignment_1 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:978:1: ( rule__Entity__NameAssignment_1 )
            {
             before(grammarAccess.getEntityAccess().getNameAssignment_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:979:1: ( rule__Entity__NameAssignment_1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:979:2: rule__Entity__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Entity__NameAssignment_1_in_rule__Entity__Group__1__Impl1927);
            rule__Entity__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getEntityAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__1__Impl"


    // $ANTLR start "rule__Entity__Group__2"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:989:1: rule__Entity__Group__2 : rule__Entity__Group__2__Impl rule__Entity__Group__3 ;
    public final void rule__Entity__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:993:1: ( rule__Entity__Group__2__Impl rule__Entity__Group__3 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:994:2: rule__Entity__Group__2__Impl rule__Entity__Group__3
            {
            pushFollow(FOLLOW_rule__Entity__Group__2__Impl_in_rule__Entity__Group__21957);
            rule__Entity__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__3_in_rule__Entity__Group__21960);
            rule__Entity__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__2"


    // $ANTLR start "rule__Entity__Group__2__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1001:1: rule__Entity__Group__2__Impl : ( ( rule__Entity__Group_2__0 )? ) ;
    public final void rule__Entity__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1005:1: ( ( ( rule__Entity__Group_2__0 )? ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1006:1: ( ( rule__Entity__Group_2__0 )? )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1006:1: ( ( rule__Entity__Group_2__0 )? )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1007:1: ( rule__Entity__Group_2__0 )?
            {
             before(grammarAccess.getEntityAccess().getGroup_2()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1008:1: ( rule__Entity__Group_2__0 )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==19) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1008:2: rule__Entity__Group_2__0
                    {
                    pushFollow(FOLLOW_rule__Entity__Group_2__0_in_rule__Entity__Group__2__Impl1987);
                    rule__Entity__Group_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getEntityAccess().getGroup_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__2__Impl"


    // $ANTLR start "rule__Entity__Group__3"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1018:1: rule__Entity__Group__3 : rule__Entity__Group__3__Impl rule__Entity__Group__4 ;
    public final void rule__Entity__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1022:1: ( rule__Entity__Group__3__Impl rule__Entity__Group__4 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1023:2: rule__Entity__Group__3__Impl rule__Entity__Group__4
            {
            pushFollow(FOLLOW_rule__Entity__Group__3__Impl_in_rule__Entity__Group__32018);
            rule__Entity__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__4_in_rule__Entity__Group__32021);
            rule__Entity__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__3"


    // $ANTLR start "rule__Entity__Group__3__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1030:1: rule__Entity__Group__3__Impl : ( '{' ) ;
    public final void rule__Entity__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1034:1: ( ( '{' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1035:1: ( '{' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1035:1: ( '{' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1036:1: '{'
            {
             before(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3()); 
            match(input,13,FOLLOW_13_in_rule__Entity__Group__3__Impl2049); 
             after(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__3__Impl"


    // $ANTLR start "rule__Entity__Group__4"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1049:1: rule__Entity__Group__4 : rule__Entity__Group__4__Impl rule__Entity__Group__5 ;
    public final void rule__Entity__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1053:1: ( rule__Entity__Group__4__Impl rule__Entity__Group__5 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1054:2: rule__Entity__Group__4__Impl rule__Entity__Group__5
            {
            pushFollow(FOLLOW_rule__Entity__Group__4__Impl_in_rule__Entity__Group__42080);
            rule__Entity__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__5_in_rule__Entity__Group__42083);
            rule__Entity__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__4"


    // $ANTLR start "rule__Entity__Group__4__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1061:1: rule__Entity__Group__4__Impl : ( ( rule__Entity__AttributesAssignment_4 )* ) ;
    public final void rule__Entity__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1065:1: ( ( ( rule__Entity__AttributesAssignment_4 )* ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1066:1: ( ( rule__Entity__AttributesAssignment_4 )* )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1066:1: ( ( rule__Entity__AttributesAssignment_4 )* )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1067:1: ( rule__Entity__AttributesAssignment_4 )*
            {
             before(grammarAccess.getEntityAccess().getAttributesAssignment_4()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1068:1: ( rule__Entity__AttributesAssignment_4 )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==RULE_ID) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1068:2: rule__Entity__AttributesAssignment_4
            	    {
            	    pushFollow(FOLLOW_rule__Entity__AttributesAssignment_4_in_rule__Entity__Group__4__Impl2110);
            	    rule__Entity__AttributesAssignment_4();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

             after(grammarAccess.getEntityAccess().getAttributesAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__4__Impl"


    // $ANTLR start "rule__Entity__Group__5"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1078:1: rule__Entity__Group__5 : rule__Entity__Group__5__Impl ;
    public final void rule__Entity__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1082:1: ( rule__Entity__Group__5__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1083:2: rule__Entity__Group__5__Impl
            {
            pushFollow(FOLLOW_rule__Entity__Group__5__Impl_in_rule__Entity__Group__52141);
            rule__Entity__Group__5__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__5"


    // $ANTLR start "rule__Entity__Group__5__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1089:1: rule__Entity__Group__5__Impl : ( '}' ) ;
    public final void rule__Entity__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1093:1: ( ( '}' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1094:1: ( '}' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1094:1: ( '}' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1095:1: '}'
            {
             before(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5()); 
            match(input,14,FOLLOW_14_in_rule__Entity__Group__5__Impl2169); 
             after(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__5__Impl"


    // $ANTLR start "rule__Entity__Group_2__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1120:1: rule__Entity__Group_2__0 : rule__Entity__Group_2__0__Impl rule__Entity__Group_2__1 ;
    public final void rule__Entity__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1124:1: ( rule__Entity__Group_2__0__Impl rule__Entity__Group_2__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1125:2: rule__Entity__Group_2__0__Impl rule__Entity__Group_2__1
            {
            pushFollow(FOLLOW_rule__Entity__Group_2__0__Impl_in_rule__Entity__Group_2__02212);
            rule__Entity__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group_2__1_in_rule__Entity__Group_2__02215);
            rule__Entity__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__0"


    // $ANTLR start "rule__Entity__Group_2__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1132:1: rule__Entity__Group_2__0__Impl : ( 'extends' ) ;
    public final void rule__Entity__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1136:1: ( ( 'extends' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1137:1: ( 'extends' )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1137:1: ( 'extends' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1138:1: 'extends'
            {
             before(grammarAccess.getEntityAccess().getExtendsKeyword_2_0()); 
            match(input,19,FOLLOW_19_in_rule__Entity__Group_2__0__Impl2243); 
             after(grammarAccess.getEntityAccess().getExtendsKeyword_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__0__Impl"


    // $ANTLR start "rule__Entity__Group_2__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1151:1: rule__Entity__Group_2__1 : rule__Entity__Group_2__1__Impl ;
    public final void rule__Entity__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1155:1: ( rule__Entity__Group_2__1__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1156:2: rule__Entity__Group_2__1__Impl
            {
            pushFollow(FOLLOW_rule__Entity__Group_2__1__Impl_in_rule__Entity__Group_2__12274);
            rule__Entity__Group_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__1"


    // $ANTLR start "rule__Entity__Group_2__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1162:1: rule__Entity__Group_2__1__Impl : ( ( rule__Entity__SuperEntityAssignment_2_1 ) ) ;
    public final void rule__Entity__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1166:1: ( ( ( rule__Entity__SuperEntityAssignment_2_1 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1167:1: ( ( rule__Entity__SuperEntityAssignment_2_1 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1167:1: ( ( rule__Entity__SuperEntityAssignment_2_1 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1168:1: ( rule__Entity__SuperEntityAssignment_2_1 )
            {
             before(grammarAccess.getEntityAccess().getSuperEntityAssignment_2_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1169:1: ( rule__Entity__SuperEntityAssignment_2_1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1169:2: rule__Entity__SuperEntityAssignment_2_1
            {
            pushFollow(FOLLOW_rule__Entity__SuperEntityAssignment_2_1_in_rule__Entity__Group_2__1__Impl2301);
            rule__Entity__SuperEntityAssignment_2_1();

            state._fsp--;


            }

             after(grammarAccess.getEntityAccess().getSuperEntityAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__1__Impl"


    // $ANTLR start "rule__Attribute__Group__0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1183:1: rule__Attribute__Group__0 : rule__Attribute__Group__0__Impl rule__Attribute__Group__1 ;
    public final void rule__Attribute__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1187:1: ( rule__Attribute__Group__0__Impl rule__Attribute__Group__1 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1188:2: rule__Attribute__Group__0__Impl rule__Attribute__Group__1
            {
            pushFollow(FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__02335);
            rule__Attribute__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__02338);
            rule__Attribute__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__0"


    // $ANTLR start "rule__Attribute__Group__0__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1195:1: rule__Attribute__Group__0__Impl : ( ( rule__Attribute__TypeAssignment_0 ) ) ;
    public final void rule__Attribute__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1199:1: ( ( ( rule__Attribute__TypeAssignment_0 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1200:1: ( ( rule__Attribute__TypeAssignment_0 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1200:1: ( ( rule__Attribute__TypeAssignment_0 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1201:1: ( rule__Attribute__TypeAssignment_0 )
            {
             before(grammarAccess.getAttributeAccess().getTypeAssignment_0()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1202:1: ( rule__Attribute__TypeAssignment_0 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1202:2: rule__Attribute__TypeAssignment_0
            {
            pushFollow(FOLLOW_rule__Attribute__TypeAssignment_0_in_rule__Attribute__Group__0__Impl2365);
            rule__Attribute__TypeAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getTypeAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__0__Impl"


    // $ANTLR start "rule__Attribute__Group__1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1212:1: rule__Attribute__Group__1 : rule__Attribute__Group__1__Impl rule__Attribute__Group__2 ;
    public final void rule__Attribute__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1216:1: ( rule__Attribute__Group__1__Impl rule__Attribute__Group__2 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1217:2: rule__Attribute__Group__1__Impl rule__Attribute__Group__2
            {
            pushFollow(FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__12395);
            rule__Attribute__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__12398);
            rule__Attribute__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__1"


    // $ANTLR start "rule__Attribute__Group__1__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1224:1: rule__Attribute__Group__1__Impl : ( ( rule__Attribute__ManyAssignment_1 )? ) ;
    public final void rule__Attribute__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1228:1: ( ( ( rule__Attribute__ManyAssignment_1 )? ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1229:1: ( ( rule__Attribute__ManyAssignment_1 )? )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1229:1: ( ( rule__Attribute__ManyAssignment_1 )? )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1230:1: ( rule__Attribute__ManyAssignment_1 )?
            {
             before(grammarAccess.getAttributeAccess().getManyAssignment_1()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1231:1: ( rule__Attribute__ManyAssignment_1 )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==20) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1231:2: rule__Attribute__ManyAssignment_1
                    {
                    pushFollow(FOLLOW_rule__Attribute__ManyAssignment_1_in_rule__Attribute__Group__1__Impl2425);
                    rule__Attribute__ManyAssignment_1();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getAttributeAccess().getManyAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__1__Impl"


    // $ANTLR start "rule__Attribute__Group__2"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1241:1: rule__Attribute__Group__2 : rule__Attribute__Group__2__Impl ;
    public final void rule__Attribute__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1245:1: ( rule__Attribute__Group__2__Impl )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1246:2: rule__Attribute__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__22456);
            rule__Attribute__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__2"


    // $ANTLR start "rule__Attribute__Group__2__Impl"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1252:1: rule__Attribute__Group__2__Impl : ( ( rule__Attribute__NameAssignment_2 ) ) ;
    public final void rule__Attribute__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1256:1: ( ( ( rule__Attribute__NameAssignment_2 ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1257:1: ( ( rule__Attribute__NameAssignment_2 ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1257:1: ( ( rule__Attribute__NameAssignment_2 ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1258:1: ( rule__Attribute__NameAssignment_2 )
            {
             before(grammarAccess.getAttributeAccess().getNameAssignment_2()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1259:1: ( rule__Attribute__NameAssignment_2 )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1259:2: rule__Attribute__NameAssignment_2
            {
            pushFollow(FOLLOW_rule__Attribute__NameAssignment_2_in_rule__Attribute__Group__2__Impl2483);
            rule__Attribute__NameAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getNameAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__2__Impl"


    // $ANTLR start "rule__Model__PackageAssignment_0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1276:1: rule__Model__PackageAssignment_0 : ( rulePackagePrefix ) ;
    public final void rule__Model__PackageAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1280:1: ( ( rulePackagePrefix ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1281:1: ( rulePackagePrefix )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1281:1: ( rulePackagePrefix )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1282:1: rulePackagePrefix
            {
             before(grammarAccess.getModelAccess().getPackagePackagePrefixParserRuleCall_0_0()); 
            pushFollow(FOLLOW_rulePackagePrefix_in_rule__Model__PackageAssignment_02524);
            rulePackagePrefix();

            state._fsp--;

             after(grammarAccess.getModelAccess().getPackagePackagePrefixParserRuleCall_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__PackageAssignment_0"


    // $ANTLR start "rule__Model__TypesAssignment_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1291:1: rule__Model__TypesAssignment_1 : ( ruleType ) ;
    public final void rule__Model__TypesAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1295:1: ( ( ruleType ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1296:1: ( ruleType )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1296:1: ( ruleType )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1297:1: ruleType
            {
             before(grammarAccess.getModelAccess().getTypesTypeParserRuleCall_1_0()); 
            pushFollow(FOLLOW_ruleType_in_rule__Model__TypesAssignment_12555);
            ruleType();

            state._fsp--;

             after(grammarAccess.getModelAccess().getTypesTypeParserRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__TypesAssignment_1"


    // $ANTLR start "rule__PackagePrefix__NameAssignment_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1306:1: rule__PackagePrefix__NameAssignment_1 : ( ruleJAVAID ) ;
    public final void rule__PackagePrefix__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1310:1: ( ( ruleJAVAID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1311:1: ( ruleJAVAID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1311:1: ( ruleJAVAID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1312:1: ruleJAVAID
            {
             before(grammarAccess.getPackagePrefixAccess().getNameJAVAIDParserRuleCall_1_0()); 
            pushFollow(FOLLOW_ruleJAVAID_in_rule__PackagePrefix__NameAssignment_12586);
            ruleJAVAID();

            state._fsp--;

             after(grammarAccess.getPackagePrefixAccess().getNameJAVAIDParserRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PackagePrefix__NameAssignment_1"


    // $ANTLR start "rule__Layer__NameAssignment_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1321:1: rule__Layer__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Layer__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1325:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1326:1: ( RULE_ID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1326:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1327:1: RULE_ID
            {
             before(grammarAccess.getLayerAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Layer__NameAssignment_12617); 
             after(grammarAccess.getLayerAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__NameAssignment_1"


    // $ANTLR start "rule__Layer__TypesAssignment_3"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1336:1: rule__Layer__TypesAssignment_3 : ( ruleLayerType ) ;
    public final void rule__Layer__TypesAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1340:1: ( ( ruleLayerType ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1341:1: ( ruleLayerType )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1341:1: ( ruleLayerType )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1342:1: ruleLayerType
            {
             before(grammarAccess.getLayerAccess().getTypesLayerTypeParserRuleCall_3_0()); 
            pushFollow(FOLLOW_ruleLayerType_in_rule__Layer__TypesAssignment_32648);
            ruleLayerType();

            state._fsp--;

             after(grammarAccess.getLayerAccess().getTypesLayerTypeParserRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Layer__TypesAssignment_3"


    // $ANTLR start "rule__TypeDef__NameAssignment_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1351:1: rule__TypeDef__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__TypeDef__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1355:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1356:1: ( RULE_ID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1356:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1357:1: RULE_ID
            {
             before(grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TypeDef__NameAssignment_12679); 
             after(grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__NameAssignment_1"


    // $ANTLR start "rule__TypeDef__MappedTypeAssignment_2_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1366:1: rule__TypeDef__MappedTypeAssignment_2_1 : ( ruleJAVAID ) ;
    public final void rule__TypeDef__MappedTypeAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1370:1: ( ( ruleJAVAID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1371:1: ( ruleJAVAID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1371:1: ( ruleJAVAID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1372:1: ruleJAVAID
            {
             before(grammarAccess.getTypeDefAccess().getMappedTypeJAVAIDParserRuleCall_2_1_0()); 
            pushFollow(FOLLOW_ruleJAVAID_in_rule__TypeDef__MappedTypeAssignment_2_12710);
            ruleJAVAID();

            state._fsp--;

             after(grammarAccess.getTypeDefAccess().getMappedTypeJAVAIDParserRuleCall_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__MappedTypeAssignment_2_1"


    // $ANTLR start "rule__Entity__NameAssignment_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1381:1: rule__Entity__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Entity__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1385:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1386:1: ( RULE_ID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1386:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1387:1: RULE_ID
            {
             before(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Entity__NameAssignment_12741); 
             after(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__NameAssignment_1"


    // $ANTLR start "rule__Entity__SuperEntityAssignment_2_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1396:1: rule__Entity__SuperEntityAssignment_2_1 : ( ( RULE_ID ) ) ;
    public final void rule__Entity__SuperEntityAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1400:1: ( ( ( RULE_ID ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1401:1: ( ( RULE_ID ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1401:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1402:1: ( RULE_ID )
            {
             before(grammarAccess.getEntityAccess().getSuperEntityEntityCrossReference_2_1_0()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1403:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1404:1: RULE_ID
            {
             before(grammarAccess.getEntityAccess().getSuperEntityEntityIDTerminalRuleCall_2_1_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Entity__SuperEntityAssignment_2_12776); 
             after(grammarAccess.getEntityAccess().getSuperEntityEntityIDTerminalRuleCall_2_1_0_1()); 

            }

             after(grammarAccess.getEntityAccess().getSuperEntityEntityCrossReference_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__SuperEntityAssignment_2_1"


    // $ANTLR start "rule__Entity__AttributesAssignment_4"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1415:1: rule__Entity__AttributesAssignment_4 : ( ruleAttribute ) ;
    public final void rule__Entity__AttributesAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1419:1: ( ( ruleAttribute ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1420:1: ( ruleAttribute )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1420:1: ( ruleAttribute )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1421:1: ruleAttribute
            {
             before(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 
            pushFollow(FOLLOW_ruleAttribute_in_rule__Entity__AttributesAssignment_42811);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__AttributesAssignment_4"


    // $ANTLR start "rule__Attribute__TypeAssignment_0"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1430:1: rule__Attribute__TypeAssignment_0 : ( ( RULE_ID ) ) ;
    public final void rule__Attribute__TypeAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1434:1: ( ( ( RULE_ID ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1435:1: ( ( RULE_ID ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1435:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1436:1: ( RULE_ID )
            {
             before(grammarAccess.getAttributeAccess().getTypeTypeCrossReference_0_0()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1437:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1438:1: RULE_ID
            {
             before(grammarAccess.getAttributeAccess().getTypeTypeIDTerminalRuleCall_0_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Attribute__TypeAssignment_02846); 
             after(grammarAccess.getAttributeAccess().getTypeTypeIDTerminalRuleCall_0_0_1()); 

            }

             after(grammarAccess.getAttributeAccess().getTypeTypeCrossReference_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__TypeAssignment_0"


    // $ANTLR start "rule__Attribute__ManyAssignment_1"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1449:1: rule__Attribute__ManyAssignment_1 : ( ( '*' ) ) ;
    public final void rule__Attribute__ManyAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1453:1: ( ( ( '*' ) ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1454:1: ( ( '*' ) )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1454:1: ( ( '*' ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1455:1: ( '*' )
            {
             before(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1456:1: ( '*' )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1457:1: '*'
            {
             before(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 
            match(input,20,FOLLOW_20_in_rule__Attribute__ManyAssignment_12886); 
             after(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 

            }

             after(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__ManyAssignment_1"


    // $ANTLR start "rule__Attribute__NameAssignment_2"
    // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1472:1: rule__Attribute__NameAssignment_2 : ( RULE_ID ) ;
    public final void rule__Attribute__NameAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1476:1: ( ( RULE_ID ) )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1477:1: ( RULE_ID )
            {
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1477:1: ( RULE_ID )
            // ../org.xtext.ic.dsl.ui/src-gen/org/xtext/ic/dsl/ui/contentassist/antlr/internal/InternalICDsl.g:1478:1: RULE_ID
            {
             before(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_2_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_22925); 
             after(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__NameAssignment_2"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel61 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__Group__0_in_ruleModel94 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackagePrefix_in_entryRulePackagePrefix121 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackagePrefix128 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PackagePrefix__Group__0_in_rulePackagePrefix154 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType181 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType188 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Type__Alternatives_in_ruleType214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayerType_in_entryRuleLayerType241 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLayerType248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__LayerType__Alternatives_in_ruleLayerType274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayer_in_entryRuleLayer301 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLayer308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__Group__0_in_ruleLayer334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_entryRuleTypeDef361 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeDef368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__0_in_ruleTypeDef394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_entryRuleJAVAID421 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJAVAID428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__0_in_ruleJAVAID454 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity481 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity488 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__0_in_ruleEntity514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute541 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__0_in_ruleAttribute574 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayer_in_rule__Type__Alternatives610 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_rule__Type__Alternatives627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_rule__Type__Alternatives644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayer_in_rule__LayerType__Alternatives676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_rule__LayerType__Alternatives693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__Group__0__Impl_in_rule__Model__Group__0723 = new BitSet(new long[]{0x0000000000049000L});
    public static final BitSet FOLLOW_rule__Model__Group__1_in_rule__Model__Group__0726 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__PackageAssignment_0_in_rule__Model__Group__0__Impl753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__Group__1__Impl_in_rule__Model__Group__1784 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__TypesAssignment_1_in_rule__Model__Group__1__Impl811 = new BitSet(new long[]{0x0000000000049002L});
    public static final BitSet FOLLOW_rule__PackagePrefix__Group__0__Impl_in_rule__PackagePrefix__Group__0846 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__PackagePrefix__Group__1_in_rule__PackagePrefix__Group__0849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__PackagePrefix__Group__0__Impl877 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PackagePrefix__Group__1__Impl_in_rule__PackagePrefix__Group__1908 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PackagePrefix__NameAssignment_1_in_rule__PackagePrefix__Group__1__Impl935 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__Group__0__Impl_in_rule__Layer__Group__0969 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Layer__Group__1_in_rule__Layer__Group__0972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Layer__Group__0__Impl1000 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__Group__1__Impl_in_rule__Layer__Group__11031 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_rule__Layer__Group__2_in_rule__Layer__Group__11034 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__NameAssignment_1_in_rule__Layer__Group__1__Impl1061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__Group__2__Impl_in_rule__Layer__Group__21091 = new BitSet(new long[]{0x000000000004D000L});
    public static final BitSet FOLLOW_rule__Layer__Group__3_in_rule__Layer__Group__21094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Layer__Group__2__Impl1122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__Group__3__Impl_in_rule__Layer__Group__31153 = new BitSet(new long[]{0x000000000004D000L});
    public static final BitSet FOLLOW_rule__Layer__Group__4_in_rule__Layer__Group__31156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Layer__TypesAssignment_3_in_rule__Layer__Group__3__Impl1183 = new BitSet(new long[]{0x0000000000049002L});
    public static final BitSet FOLLOW_rule__Layer__Group__4__Impl_in_rule__Layer__Group__41214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__Layer__Group__4__Impl1242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__0__Impl_in_rule__TypeDef__Group__01283 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__1_in_rule__TypeDef__Group__01286 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__TypeDef__Group__0__Impl1314 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__1__Impl_in_rule__TypeDef__Group__11345 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__2_in_rule__TypeDef__Group__11348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__NameAssignment_1_in_rule__TypeDef__Group__1__Impl1375 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__2__Impl_in_rule__TypeDef__Group__21405 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__0_in_rule__TypeDef__Group__2__Impl1432 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__0__Impl_in_rule__TypeDef__Group_2__01469 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__1_in_rule__TypeDef__Group_2__01472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__TypeDef__Group_2__0__Impl1500 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__1__Impl_in_rule__TypeDef__Group_2__11531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__MappedTypeAssignment_2_1_in_rule__TypeDef__Group_2__1__Impl1558 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__0__Impl_in_rule__JAVAID__Group__01592 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__1_in_rule__JAVAID__Group__01595 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__JAVAID__Group__0__Impl1622 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__1__Impl_in_rule__JAVAID__Group__11651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__0_in_rule__JAVAID__Group__1__Impl1678 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__0__Impl_in_rule__JAVAID__Group_1__01713 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__1_in_rule__JAVAID__Group_1__01716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__JAVAID__Group_1__0__Impl1744 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__1__Impl_in_rule__JAVAID__Group_1__11775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__JAVAID__Group_1__1__Impl1802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__0__Impl_in_rule__Entity__Group__01835 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Entity__Group__1_in_rule__Entity__Group__01838 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Entity__Group__0__Impl1866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__1__Impl_in_rule__Entity__Group__11897 = new BitSet(new long[]{0x0000000000082000L});
    public static final BitSet FOLLOW_rule__Entity__Group__2_in_rule__Entity__Group__11900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__NameAssignment_1_in_rule__Entity__Group__1__Impl1927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__2__Impl_in_rule__Entity__Group__21957 = new BitSet(new long[]{0x0000000000082000L});
    public static final BitSet FOLLOW_rule__Entity__Group__3_in_rule__Entity__Group__21960 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__0_in_rule__Entity__Group__2__Impl1987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__3__Impl_in_rule__Entity__Group__32018 = new BitSet(new long[]{0x0000000000004010L});
    public static final BitSet FOLLOW_rule__Entity__Group__4_in_rule__Entity__Group__32021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Entity__Group__3__Impl2049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__4__Impl_in_rule__Entity__Group__42080 = new BitSet(new long[]{0x0000000000004010L});
    public static final BitSet FOLLOW_rule__Entity__Group__5_in_rule__Entity__Group__42083 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__AttributesAssignment_4_in_rule__Entity__Group__4__Impl2110 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rule__Entity__Group__5__Impl_in_rule__Entity__Group__52141 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__Entity__Group__5__Impl2169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__0__Impl_in_rule__Entity__Group_2__02212 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__1_in_rule__Entity__Group_2__02215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Entity__Group_2__0__Impl2243 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__1__Impl_in_rule__Entity__Group_2__12274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__SuperEntityAssignment_2_1_in_rule__Entity__Group_2__1__Impl2301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__02335 = new BitSet(new long[]{0x0000000000100010L});
    public static final BitSet FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__02338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__TypeAssignment_0_in_rule__Attribute__Group__0__Impl2365 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__12395 = new BitSet(new long[]{0x0000000000100010L});
    public static final BitSet FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__12398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__ManyAssignment_1_in_rule__Attribute__Group__1__Impl2425 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__22456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__NameAssignment_2_in_rule__Attribute__Group__2__Impl2483 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackagePrefix_in_rule__Model__PackageAssignment_02524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_rule__Model__TypesAssignment_12555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_rule__PackagePrefix__NameAssignment_12586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Layer__NameAssignment_12617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayerType_in_rule__Layer__TypesAssignment_32648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__TypeDef__NameAssignment_12679 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_rule__TypeDef__MappedTypeAssignment_2_12710 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Entity__NameAssignment_12741 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Entity__SuperEntityAssignment_2_12776 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_rule__Entity__AttributesAssignment_42811 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Attribute__TypeAssignment_02846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rule__Attribute__ManyAssignment_12886 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_22925 = new BitSet(new long[]{0x0000000000000002L});

}